package com.pccw.hessian.support.client;



import java.lang.reflect.Method;


/**
 * 任务执行监听器.
 * 该监听器只应该在UI线程中创建
 * @param <T>	任务成功执行返回结果类型
 */
public interface TaskExecuteListener<R,E extends Throwable> {
	
	/**
	 * 在任务开始前执行该方法，你可以在此方法做一些初始化工作
	 * [执行在UI线程]
	 */
	void onPerExecute(Method method, Object[] args);
	/**
	 * 任务执行过程中出现异常将调用此方法
	 * [执行在UI线程]
	 */
	void onExceptionOccured(Method method, Object[] args,E e);
	/**
	 * 任务执行成功将调用该方法,Result是任务结果
	 */
	void onExecuteSuccess(Method method, Object[] args,R result);
	
	/**
	 * 任务成功执行［或者发生异常］后都将执行该方法
	 * @param context
	 * @param uriKey
	 */
	void onFinally(Method method, Object[] args, R result);
}